#include <iostream>

using namespace std;
//C++通过提供特殊的对象指针，this指针指向被调用的成员函数所属的对象
//this指针是隐含每一个非静态成员函数内的一种指针
//this指针不需要定义，直接使用即可

//this指针的用途:
//1、当形参和成员变量同名时，可用this指针来区分
//2、在类的非静态成员函数中返回对象本身，可使用return *this
class Person {
public:
    int age;

    Person() {

    }

    Person(int age) {
        //1、解决命名冲突
        this->age = age;//this指针指向被调用的成员函数所属的对象
    }

    Person &PersonAddAge(Person &person) {
        this->age += person.age;
        return *this;
    }
};

//1、当形参和成员变量同名时，可以用this指针来区分
void test1() {
    Person person(18);
    cout << "person:age=" << person.age << endl;
}

//2、在类的非静态成员函数中返回对象本身，可以使用return *this
void test2() {
    Person person1(10);
    Person person2(10);
    person2.PersonAddAge(person1).PersonAddAge(person1).PersonAddAge(person1);//链式编程
    cout << "person1:age=" << person1.age << endl;
    cout << "person2:age=" << person2.age << endl;
}

int main() {
    test1();
    cout << "=========" << endl;
    test2();
    return 0;
}
